package com.idea.dsl.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * DSL配置属性
 */
@Data
@Component
@ConfigurationProperties(prefix = "dsl")
public class DslProperties {
    
    /**
     * 生成器配置
     */
    private Generator generator = new Generator();
    
    /**
     * 模型配置
     */
    private Map<String, ModelConfig> models;
    
    /**
     * 模板配置
     */
    private Templates templates = new Templates();
    
    /**
     * 生成器配置
     */
    @Data
    public static class Generator {
        /**
         * 默认模型
         */
        private String defaultModel = "openai";
        
        /**
         * 最大token数
         */
        private Integer maxTokens = 2000;
        
        /**
         * 温度参数
         */
        private Double temperature = 0.7;
        
        /**
         * 超时时间(毫秒)
         */
        private Long timeout = 30000L;
    }
    
    /**
     * 模型配置
     */
    @Data
    public static class ModelConfig {
        /**
         * API密钥
         */
        private String apiKey;
        
        /**
         * 基础URL
         */
        private String baseUrl;
        
        /**
         * 模型名称
         */
        private String model;
        
        /**
         * 最大token数
         */
        private Integer maxTokens;
        
        /**
         * 超时时间(毫秒)
         */
        private Long timeout = 30000L;
    }
    
    /**
     * 模板配置
     */
    @Data
    public static class Templates {
        /**
         * 基础路径
         */
        private String basePath = "classpath:templates/dsl";
        
        /**
         * 是否启用缓存
         */
        private Boolean cacheEnabled = true;
    }
}
